Skip to content

[FEAT] Target SDK 35 대응 및 알람 해제 버튼을 통한 미션 진입 실패 버그 수정#244

Merged
DongChyeon merged 6 commits into
developfrom
feat/#243-sdk35-support
Jul 29, 2025
Merged

[FEAT] Target SDK 35 대응 및 알람 해제 버튼을 통한 미션 진입 실패 버그 수정#244
DongChyeon merged 6 commits into
developfrom
feat/#243-sdk35-support

Conversation

@DongChyeon
Copy link
Copy Markdown
Member

@DongChyeon DongChyeon commented Jul 29, 2025

Related issue 🛠

closed #243

어떤 변경사항이 있었나요?

  • 🐞 BugFix Something isn't working
  • 🎨 Design Markup & styling
  • 📃 Docs Documentation writing and editing (README.md, etc.)
  • ✨ Feature Feature
  • 🔨 Refactor Code refactoring
  • ⚙️ Setting Development environment setup
  • ✅ Test Test related (Junit, etc.)

CheckPoint ✅

PR이 다음 요구 사항을 충족하는지 확인하세요.

  • PR 컨벤션에 맞게 작성했습니다. (필수)
  • merge할 브랜치의 위치를 확인해 주세요(main❌/develop⭕) (필수)
  • Approve된 PR은 assigner가 머지하고, 수정 요청이 온 경우 수정 후 다시 push를 합니다. (필수)
  • BugFix의 경우, 버그의 원인을 파악하였습니다. (선택)

Work Description ✏️

  • DismissIntent 생성 시 미션 타입과 횟수(missionType, missionCount)를 함께 전달하도록 수정했습니다.
  • Android 15(API 35) 이상에서 LocalConfiguration.screenHeightDp에 statusBar와 navigationBar 높이까지 포함되는 이슈를 반영하여, 홈 화면의 바텀시트 높이 계산 시 해당 영역을 제외하도록 처리했습니다.
  • ModalBottomSheetLayout 마이그레이션으로 인한 하단 bottomSheet Scrim 영역을 가리기 위해 navigationBar 영역에 검은색 배경을 추가했습니다.

Uncompleted Tasks 😅

  • N/A

To Reviewers 📢

Summary by CodeRabbit

  • 신규 기능

    • 알람 해제 인텐트에 미션 타입과 카운트 정보가 추가되어, 알람 해제 시 더 많은 정보를 전달할 수 있습니다.
    • 네비게이션 바 영역에 스크림(어두운 오버레이)이 추가되어 UI가 개선되었습니다.
  • 버그 수정

    • 알람 해제 및 스누즈 처리 시 필수 값 누락에 대한 예외 처리가 강화되었습니다.
  • 리팩터링

    • 여러 컴포저블 및 뷰모델 함수의 파라미터와 레이아웃 구조가 간결하게 정리되었습니다.
    • 네비게이션 그래프와 레이아웃 구조가 분리되어 유지보수가 용이해졌습니다.
    • 불필요한 로그 및 스타일 관련 코드가 제거되었습니다.
  • 스타일

    • 시스템 바 스타일 설정이 기본값으로 단순화되었습니다.
    • 홈 화면 및 알람 인터랙션 화면의 시스템 UI 패딩 처리가 개선되었습니다.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jul 29, 2025

Walkthrough

Android의 Target SDK 버전이 34에서 35로 상향 조정되었습니다. 알람 관련 인텐트 및 브로드캐스트에 missionType, missionCount 파라미터가 추가되어 데이터 전달이 확장되었습니다. 여러 컴포저블 함수에서 시스템 바 패딩 및 레이아웃 구조가 개선되었고, 일부 함수 시그니처와 접근 제한자가 변경되었습니다.

Changes

Cohort / File(s) Change Summary
Target SDK 업데이트
app/build.gradle.kts
Target SDK 버전이 34에서 35로 변경됨.
Edge-to-Edge 및 시스템 바 스타일 단순화
app/src/main/java/com/yapp/orbit/MainActivity.kt, feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/AlarmInteractionActivity.kt
enableEdgeToEdge 호출 시 커스텀 스타일 파라미터 제거, 기본 동작 사용. 불필요한 Surface 래퍼 및 패딩 제거.
네비게이션 구조 및 스크림 추가
app/src/main/java/com/yapp/orbit/OrbitNavHost.kt
네비게이션 그래프를 별도 컴포저블로 분리, NavigationBarScrim 추가, 스낵바 코드 스타일 정리.
알람 인텐트 파라미터 확장
core/alarm/src/main/java/com/yapp/alarm/AlarmConstants.kt, core/alarm/src/main/java/com/yapp/alarm/pendingIntent/interaction/AlarmDismissPendingIntent.kt, core/alarm/src/main/java/com/yapp/alarm/receivers/AlarmInteractionActivityReceiver.kt, core/alarm/src/main/java/com/yapp/alarm/receivers/AlarmReceiver.kt, core/alarm/src/main/java/com/yapp/alarm/services/AlarmService.kt
EXTRA_MISSION_TYPE, EXTRA_MISSION_COUNT 상수 추가. 알람 dismiss 인텐트 및 브로드캐스트에 missionType, missionCount 파라미터 추가 및 전달 로직 반영.
알람 인터랙션 및 스누즈 화면 리팩토링
feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/AlarmInteractionNavGraph.kt, feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/action/AlarmActionScreen.kt, feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/action/AlarmActionViewModel.kt, feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/snooze/AlarmSnoozeTimerScreen.kt, feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/snooze/AlarmSnoozeTimerViewModel.kt
컴포저블 함수 시그니처를 state와 processAction 직접 전달 방식으로 변경. 알람 dismiss 인텐트에 mission 관련 파라미터 반영. 네비게이션 fallback 제거.
홈 화면 시스템 바 패딩 반영
feature/home/src/main/java/com/yapp/home/HomeScreen.kt
statusBar, navigationBar 높이 계산 및 바텀시트 높이 산정식에 반영. 일부 함수 접근 제한자 private으로 변경.
미션 뷰모델 알람 dismiss 인텐트 개선
feature/mission/src/main/java/com/yapp/mission/MissionViewModel.kt
알람 dismiss 인텐트 생성 시 missionType, missionCount 파라미터 포함. 관련 메서드 구조 및 순서 정리.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant AlarmService
    participant AlarmReceiver
    participant AlarmInteractionActivityReceiver
    participant MissionViewModel

    User->>AlarmService: 알람 알림 생성
    AlarmService->>AlarmDismissPendingIntent: missionType, missionCount 포함 인텐트 생성
    AlarmDismissPendingIntent-->>AlarmService: PendingIntent 반환
    User->>AlarmReceiver: 알람 DISMISS 액션 브로드캐스트
    AlarmReceiver->>AlarmReceiver: notificationId, missionType, missionCount 추출
    AlarmReceiver->>AlarmReceiver: 유효성 검사
    AlarmReceiver->>AlarmReceiver: 브로드캐스트로 AlarmInteractionActivity 종료
    AlarmReceiver->>AlarmInteractionActivityReceiver: notificationId, missionType, missionCount 포함 인텐트 전달
    AlarmInteractionActivityReceiver->>MissionViewModel: 인텐트 파라미터 전달
    MissionViewModel->>MissionViewModel: 미션 완료 처리 및 알람 dismiss 브로드캐스트
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20분

Assessment against linked issues

Objective Addressed Explanation
Target SDK 35 대응 (#243)
알람 리스트 바텀시트 높이 계산식 변경 (#243)

Assessment against linked issues: Out-of-scope changes

(해당 없음)

Possibly related PRs

Suggested reviewers

  • MoonsuKang

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.


📜 Recent review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e0de396 and 374369f.

📒 Files selected for processing (16)
  • app/build.gradle.kts (1 hunks)
  • app/src/main/java/com/yapp/orbit/MainActivity.kt (1 hunks)
  • app/src/main/java/com/yapp/orbit/OrbitNavHost.kt (3 hunks)
  • core/alarm/src/main/java/com/yapp/alarm/AlarmConstants.kt (1 hunks)
  • core/alarm/src/main/java/com/yapp/alarm/pendingIntent/interaction/AlarmDismissPendingIntent.kt (2 hunks)
  • core/alarm/src/main/java/com/yapp/alarm/receivers/AlarmInteractionActivityReceiver.kt (2 hunks)
  • core/alarm/src/main/java/com/yapp/alarm/receivers/AlarmReceiver.kt (3 hunks)
  • core/alarm/src/main/java/com/yapp/alarm/services/AlarmService.kt (3 hunks)
  • feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/AlarmInteractionActivity.kt (1 hunks)
  • feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/AlarmInteractionNavGraph.kt (0 hunks)
  • feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/action/AlarmActionScreen.kt (5 hunks)
  • feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/action/AlarmActionViewModel.kt (1 hunks)
  • feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/snooze/AlarmSnoozeTimerScreen.kt (3 hunks)
  • feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/snooze/AlarmSnoozeTimerViewModel.kt (1 hunks)
  • feature/home/src/main/java/com/yapp/home/HomeScreen.kt (5 hunks)
  • feature/mission/src/main/java/com/yapp/mission/MissionViewModel.kt (4 hunks)
💤 Files with no reviewable changes (1)
  • feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/AlarmInteractionNavGraph.kt
🧰 Additional context used
🧠 Learnings (5)
📓 Common learnings
Learnt from: DongChyeon
PR: YAPP-Github/Orbit-Android#234
File: feature/home/src/main/java/com/yapp/home/alarm/component/bottomsheet/AlarmMissionBottomSheet.kt:73-76
Timestamp: 2025-07-23T10:29:14.146Z
Learning: AlarmMissionBottomSheet에서 missionType/missionCount 파라미터는 현재 저장된 값을 UI에 표시하기 위해 사용되고, selectedMissionType/selectedMissionCount는 사용자가 변경 중인 내부 작업 상태를 관리하기 위해 사용된다. onDone이나 onSave 콜백을 통해 명시적으로 저장할 때만 변경사항이 반영되는 UX 패턴이다.
core/alarm/src/main/java/com/yapp/alarm/services/AlarmService.kt (1)

Learnt from: DongChyeon
PR: #234
File: feature/home/src/main/java/com/yapp/home/alarm/component/bottomsheet/AlarmMissionBottomSheet.kt:73-76
Timestamp: 2025-07-23T10:29:14.146Z
Learning: AlarmMissionBottomSheet에서 missionType/missionCount 파라미터는 현재 저장된 값을 UI에 표시하기 위해 사용되고, selectedMissionType/selectedMissionCount는 사용자가 변경 중인 내부 작업 상태를 관리하기 위해 사용된다. onDone이나 onSave 콜백을 통해 명시적으로 저장할 때만 변경사항이 반영되는 UX 패턴이다.

core/alarm/src/main/java/com/yapp/alarm/AlarmConstants.kt (1)

Learnt from: DongChyeon
PR: #234
File: feature/home/src/main/java/com/yapp/home/alarm/component/bottomsheet/AlarmMissionBottomSheet.kt:73-76
Timestamp: 2025-07-23T10:29:14.146Z
Learning: AlarmMissionBottomSheet에서 missionType/missionCount 파라미터는 현재 저장된 값을 UI에 표시하기 위해 사용되고, selectedMissionType/selectedMissionCount는 사용자가 변경 중인 내부 작업 상태를 관리하기 위해 사용된다. onDone이나 onSave 콜백을 통해 명시적으로 저장할 때만 변경사항이 반영되는 UX 패턴이다.

core/alarm/src/main/java/com/yapp/alarm/pendingIntent/interaction/AlarmDismissPendingIntent.kt (1)

Learnt from: DongChyeon
PR: #234
File: feature/home/src/main/java/com/yapp/home/alarm/component/bottomsheet/AlarmMissionBottomSheet.kt:73-76
Timestamp: 2025-07-23T10:29:14.146Z
Learning: AlarmMissionBottomSheet에서 missionType/missionCount 파라미터는 현재 저장된 값을 UI에 표시하기 위해 사용되고, selectedMissionType/selectedMissionCount는 사용자가 변경 중인 내부 작업 상태를 관리하기 위해 사용된다. onDone이나 onSave 콜백을 통해 명시적으로 저장할 때만 변경사항이 반영되는 UX 패턴이다.

feature/mission/src/main/java/com/yapp/mission/MissionViewModel.kt (2)

Learnt from: DongChyeon
PR: #238
File: feature/mission/src/main/java/com/yapp/mission/MissionScreen.kt:118-120
Timestamp: 2025-07-27T15:20:35.256Z
Learning: MissionRoute와 MissionScreen이 같은 파일(feature/mission/src/main/java/com/yapp/mission/MissionScreen.kt)에 있을 때, MissionRoute에서 BackHandler를 사용하면 파일 레벨의 import 문은 유지되어야 함.

Learnt from: DongChyeon
PR: #234
File: feature/home/src/main/java/com/yapp/home/alarm/component/bottomsheet/AlarmMissionBottomSheet.kt:73-76
Timestamp: 2025-07-23T10:29:14.146Z
Learning: AlarmMissionBottomSheet에서 missionType/missionCount 파라미터는 현재 저장된 값을 UI에 표시하기 위해 사용되고, selectedMissionType/selectedMissionCount는 사용자가 변경 중인 내부 작업 상태를 관리하기 위해 사용된다. onDone이나 onSave 콜백을 통해 명시적으로 저장할 때만 변경사항이 반영되는 UX 패턴이다.

🧬 Code Graph Analysis (6)
feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/snooze/AlarmSnoozeTimerViewModel.kt (1)
core/alarm/src/main/java/com/yapp/alarm/pendingIntent/interaction/AlarmDismissPendingIntent.kt (1)
  • createAlarmDismissIntent (27-39)
feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/AlarmInteractionActivity.kt (2)
core/common/src/main/java/com/yapp/common/navigation/OrbitNavigator.kt (1)
  • rememberOrbitNavigator (105-110)
feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/AlarmInteractionNavGraph.kt (1)
  • alarmInteractionNavGraph (33-69)
feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/action/AlarmActionViewModel.kt (1)
core/alarm/src/main/java/com/yapp/alarm/pendingIntent/interaction/AlarmDismissPendingIntent.kt (1)
  • createAlarmDismissIntent (27-39)
feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/action/AlarmActionScreen.kt (3)
feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/action/AlarmActionViewModel.kt (1)
  • processAction (44-49)
core/ui/src/main/java/com/yapp/ui/component/button/OrbitButton.kt (1)
  • OrbitButton (30-92)
core/ui/src/main/java/com/yapp/ui/component/banner/AdsBanner.kt (1)
  • AdsBanner (14-34)
feature/mission/src/main/java/com/yapp/mission/MissionViewModel.kt (3)
core/alarm/src/main/java/com/yapp/alarm/pendingIntent/interaction/AlarmDismissPendingIntent.kt (1)
  • createAlarmDismissIntent (27-39)
data/src/main/java/com/yapp/data/repositoryimpl/FortuneRepositoryImpl.kt (1)
  • postFortune (30-35)
domain/src/main/java/com/yapp/domain/repository/FortuneRepository.kt (1)
  • postFortune (21-21)
feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/snooze/AlarmSnoozeTimerScreen.kt (1)
feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/snooze/AlarmSnoozeTimerViewModel.kt (1)
  • processAction (41-45)
🔇 Additional comments (29)
core/alarm/src/main/java/com/yapp/alarm/AlarmConstants.kt (1)

10-11: 새로운 미션 관련 상수 추가 승인

EXTRA_MISSION_TYPEEXTRA_MISSION_COUNT 상수가 적절하게 추가되었습니다. 기존 네이밍 컨벤션과 일치하며, 알람 해제 시 미션 정보 전달을 위한 명확한 역할을 수행합니다.

app/build.gradle.kts (1)

15-15: Target SDK 35 업데이트 승인

Android 15 대응을 위한 Target SDK 업데이트가 적절하게 적용되었습니다. 다른 빌드 설정은 그대로 유지되어 안정성을 보장합니다.

app/src/main/java/com/yapp/orbit/MainActivity.kt (1)

27-27: Edge-to-edge 설정 단순화 승인

enableEdgeToEdge() 호출이 기본 스타일링을 사용하도록 단순화되었습니다. Target SDK 35 대응과 함께 코드 복잡성이 줄어들어 유지보수성이 향상되었습니다.

feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/action/AlarmActionViewModel.kt (1)

122-131: 알람 해제 인텐트에 미션 정보 추가 승인

sendAlarmDismissEventToAlarmReceiver 메서드가 미션 타입과 개수 정보를 포함하도록 개선되었습니다. 변수명도 it에서 alarm으로 변경되어 가독성이 향상되었습니다. 이는 알람 해제 시 미션 정보가 올바르게 전달되도록 하는 중요한 수정입니다.

feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/snooze/AlarmSnoozeTimerViewModel.kt (1)

94-103: 일관된 미션 정보 전달 구현 승인

AlarmActionViewModel과 동일한 패턴으로 알람 해제 인텐트에 미션 정보가 추가되었습니다. 변수 스코핑도 명확하게 개선되어 코드의 일관성과 가독성이 향상되었습니다.

core/alarm/src/main/java/com/yapp/alarm/receivers/AlarmInteractionActivityReceiver.kt (2)

33-40: 미션 파라미터 검증 로직이 올바르게 구현되었습니다.

필수 파라미터들을 올바르게 추출하고 검증하여 누락된 값이 있을 경우 조기 반환하는 방식이 적절합니다.


48-51: 동적 URI 생성 로직이 정확합니다.

미션 파라미터들을 쿼리 파라미터로 포함한 URI 생성이 올바르게 구현되어 있습니다.

feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/AlarmInteractionActivity.kt (2)

44-44: Target SDK 35 대응을 위한 edge-to-edge 설정 단순화가 적절합니다.

명시적인 시스템 바 스타일 파라미터를 제거하여 최신 Android 개발 방식에 맞게 개선되었습니다.


48-56: UI 구조 단순화가 잘 적용되었습니다.

불필요한 Surface 래퍼를 제거하고 NavHost를 직접 사용하여 컴포지션 구조가 개선되었습니다.

core/alarm/src/main/java/com/yapp/alarm/services/AlarmService.kt (1)

138-152: 조건부 펜딩 인텐트 생성 로직이 올바르게 구현되었습니다.

fortune 날짜 확인에 따라 미션 네비게이션 또는 알람 해제 인텐트를 적절히 선택하여 생성하고, 미션 관련 파라미터들이 올바르게 전달되고 있습니다.

feature/home/src/main/java/com/yapp/home/HomeScreen.kt (3)

18-27: Target SDK 35 대응을 위한 WindowInsets imports가 적절합니다.

Android 15에서 변경된 화면 높이 계산 방식에 대응하기 위해 필요한 imports가 추가되었습니다.


285-286: Target SDK 35 핵심 이슈를 정확히 해결했습니다.

Android 15에서 LocalConfiguration.screenHeightDp가 시스템 바 높이를 포함하도록 변경된 점을 반영하여, 상태바와 내비게이션 바 높이를 별도로 계산하고 하단 시트 높이에서 차감하는 로직이 올바르게 구현되었습니다.

Also applies to: 400-400


545-545: 컴포저블 가시성 범위를 private으로 제한한 것이 적절합니다.

파일 내부에서만 사용되는 UI 컴포넌트들의 접근 제한자를 private으로 변경하여 캡슐화가 개선되었습니다.

Also applies to: 581-581

core/alarm/src/main/java/com/yapp/alarm/pendingIntent/interaction/AlarmDismissPendingIntent.kt (2)

12-25: 미션 파라미터 추가 및 펜딩 인텐트 생성이 올바르게 구현되었습니다.

함수 시그니처에 missionType과 missionCount 파라미터가 추가되고, 이들이 올바르게 하위 함수로 전달되어 인텐트에 포함되도록 구현되었습니다.


27-39: 인텐트 엑스트라 처리가 정확하게 구현되었습니다.

AlarmConstants의 상수를 사용하여 미션 관련 파라미터들을 인텐트에 추가하는 로직이 일관성 있게 구현되었습니다.

feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/action/AlarmActionScreen.kt (3)

53-54: 파라미터 간소화가 잘 되었습니다!

람다 제공자 패턴에서 직접 state와 action 처리 함수를 전달하는 방식으로 변경한 것이 더 명확하고 간결합니다.


71-72: 함수 시그니처 변경이 일관성 있게 적용되었습니다.


127-193: Android 15 대응을 위한 레이아웃 구조 개선이 적절합니다.

statusBarsPadding을 AdsBanner에만 적용하고 메인 컨텐츠는 전체 화면을 채우도록 변경한 것이 Android 15의 화면 높이 계산 변경사항에 잘 대응합니다.

feature/alarm-interaction/src/main/java/com/yapp/alarm/interaction/snooze/AlarmSnoozeTimerScreen.kt (1)

56-57: AlarmActionScreen과 일관된 리팩토링이 적용되었습니다.

동일한 패턴으로 state와 processAction을 직접 전달하는 방식으로 통일되어 코드베이스의 일관성이 향상되었습니다.

Also applies to: 63-64, 76-76

core/alarm/src/main/java/com/yapp/alarm/receivers/AlarmReceiver.kt (3)

96-103: notificationId 검증 로직이 적절합니다.

유효하지 않은 notificationId에 대한 early return과 에러 로깅이 방어적 프로그래밍 관점에서 잘 구현되었습니다.


105-113: notificationId 기반으로 일관성 있게 변경되었습니다.

알람 취소와 브로드캐스트 전송에서 notificationId를 일관되게 사용하고, 미션 관련 파라미터들이 올바르게 전달됩니다.


176-189: 브로드캐스트 메서드가 새로운 요구사항에 맞게 업데이트되었습니다.

미션 타입과 카운트를 포함하여 필요한 모든 파라미터가 인텐트에 올바르게 추가됩니다.

app/src/main/java/com/yapp/orbit/OrbitNavHost.kt (3)

53-69: UI 구조 개선이 Android 15 대응에 적합합니다.

Box로 전체를 감싸고 NavigationBarScrim을 추가한 구조가 네비게이션 바 영역 처리에 효과적입니다.


72-90: 네비게이션 그래프 추출로 코드 구조가 개선되었습니다.

별도의 Composable로 분리하여 관심사 분리가 잘 되었고, 단일 NavHost 패턴이 중첩된 NavHost보다 더 명확합니다.


92-102: NavigationBarScrim 구현이 정확합니다.

WindowInsets를 사용하여 네비게이션 바 높이를 정확히 계산하고, zIndex로 적절한 레이어링을 보장합니다. PR에서 언급한 바텀시트 스크림 투명도 문제를 해결합니다.

feature/mission/src/main/java/com/yapp/mission/MissionViewModel.kt (4)

35-35: SavedStateHandle을 private으로 변경한 것이 적절합니다.

ViewModel 외부에서 SavedStateHandle에 직접 접근할 필요가 없으므로 캡슐화가 개선되었습니다.


60-72: 알람 해제 인텐트 전송 로직이 안전하게 구현되었습니다.

null 체크와 안전한 타입 변환을 사용하고, notificationId가 없을 때 early return하는 방어적 프로그래밍이 잘 적용되었습니다.


137-145: 미션 완료 처리 로직이 명확합니다.


183-189: 유틸리티 메서드들이 적절히 구현되었습니다.

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/#243-sdk35-support

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@codecov
Copy link
Copy Markdown

codecov Bot commented Jul 29, 2025

Codecov Report

❌ Patch coverage is 0% with 62 lines in your changes missing coverage. Please review.
✅ Project coverage is 4.25%. Comparing base (e9bafd0) to head (374369f).
⚠️ Report is 12 commits behind head on develop.

Files with missing lines Patch % Lines
...ain/java/com/yapp/alarm/receivers/AlarmReceiver.kt 0.00% 42 Missing ⚠️
...larm/receivers/AlarmInteractionActivityReceiver.kt 0.00% 9 Missing ⚠️
...ure/home/src/main/java/com/yapp/home/HomeScreen.kt 0.00% 5 Missing ⚠️
...ingIntent/interaction/AlarmDismissPendingIntent.kt 0.00% 3 Missing ⚠️
.../main/java/com/yapp/alarm/services/AlarmService.kt 0.00% 3 Missing ⚠️

❌ Your project status has failed because the head coverage (4.25%) is below the target coverage (60.00%). You can increase the head coverage or adjust the target coverage.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff              @@
##             develop    #244      +/-   ##
============================================
- Coverage       4.27%   4.25%   -0.03%     
  Complexity        53      53              
============================================
  Files             50      50              
  Lines           4421    4446      +25     
  Branches         647     649       +2     
============================================
  Hits             189     189              
- Misses          4222    4247      +25     
  Partials          10      10              
Files with missing lines Coverage Δ
...arm/src/main/java/com/yapp/alarm/AlarmConstants.kt 100.00% <ø> (ø)
...ingIntent/interaction/AlarmDismissPendingIntent.kt 0.00% <0.00%> (ø)
.../main/java/com/yapp/alarm/services/AlarmService.kt 0.00% <0.00%> (ø)
...ure/home/src/main/java/com/yapp/home/HomeScreen.kt 0.00% <0.00%> (ø)
...larm/receivers/AlarmInteractionActivityReceiver.kt 0.00% <0.00%> (ø)
...ain/java/com/yapp/alarm/receivers/AlarmReceiver.kt 0.00% <0.00%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@DongChyeon DongChyeon merged commit 8852463 into develop Jul 29, 2025
2 of 4 checks passed
@coderabbitai coderabbitai Bot mentioned this pull request Jul 30, 2025
12 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] Target SDK 35 대응

1 participant